AOMedia AV1 Codec
aom_image.h File Reference

Describes the aom image descriptor and associated operations. More...

#include "aom/aom_integer.h"
Include dependency graph for aom_image.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  aom_metadata
 Metadata payload. More...
 
struct  aom_image
 Image Descriptor. More...
 

Macros

#define AOM_IMAGE_ABI_VERSION
 Current ABI version number.
 
#define AOM_IMG_FMT_PLANAR   0x100
 
#define AOM_IMG_FMT_UV_FLIP   0x200
 
#define AOM_IMG_FMT_HIGHBITDEPTH   0x800
 
#define AOM_HAVE_IMG_FMT_NV12   1
 Allows detection of the presence of AOM_IMG_FMT_NV12 at compile time.
 
#define AOM_PLANE_PACKED   0
 
#define AOM_PLANE_Y   0
 
#define AOM_PLANE_U   1
 
#define AOM_PLANE_V   2
 

Typedefs

typedef enum aom_img_fmt aom_img_fmt_t
 List of supported image formats.
 
typedef enum aom_color_primaries aom_color_primaries_t
 List of supported color primaries.
 
typedef enum aom_transfer_characteristics aom_transfer_characteristics_t
 List of supported transfer functions.
 
typedef enum aom_matrix_coefficients aom_matrix_coefficients_t
 List of supported matrix coefficients.
 
typedef enum aom_color_range aom_color_range_t
 List of supported color range.
 
typedef enum aom_chroma_sample_position aom_chroma_sample_position_t
 List of chroma sample positions.
 
typedef enum aom_metadata_insert_flags aom_metadata_insert_flags_t
 List of insert flags for Metadata.
 
typedef struct aom_metadata_array aom_metadata_array_t
 Array of aom_metadata structs for an image.
 
typedef struct aom_metadata aom_metadata_t
 Metadata payload.
 
typedef struct aom_image aom_image_t
 Image Descriptor.
 

Enumerations

enum  aom_img_fmt {
  AOM_IMG_FMT_NONE , AOM_IMG_FMT_YV12 , AOM_IMG_FMT_I420 = 0x100 | 2 , AOM_IMG_FMT_AOMYV12 ,
  AOM_IMG_FMT_AOMI420 = 0x100 | 4 , AOM_IMG_FMT_I422 = 0x100 | 5 , AOM_IMG_FMT_I444 = 0x100 | 6 , AOM_IMG_FMT_NV12 ,
  AOM_IMG_FMT_I42016 = AOM_IMG_FMT_I420 | 0x800 , AOM_IMG_FMT_YV1216 = AOM_IMG_FMT_YV12 | 0x800 , AOM_IMG_FMT_I42216 = AOM_IMG_FMT_I422 | 0x800 , AOM_IMG_FMT_I44416 = AOM_IMG_FMT_I444 | 0x800
}
 List of supported image formats. More...
 
enum  aom_color_primaries {
  AOM_CICP_CP_RESERVED_0 = 0 , AOM_CICP_CP_BT_709 = 1 , AOM_CICP_CP_UNSPECIFIED = 2 , AOM_CICP_CP_RESERVED_3 = 3 ,
  AOM_CICP_CP_BT_470_M = 4 , AOM_CICP_CP_BT_470_B_G = 5 , AOM_CICP_CP_BT_601 = 6 , AOM_CICP_CP_SMPTE_240 = 7 ,
  AOM_CICP_CP_GENERIC_FILM , AOM_CICP_CP_BT_2020 = 9 , AOM_CICP_CP_XYZ = 10 , AOM_CICP_CP_SMPTE_431 = 11 ,
  AOM_CICP_CP_SMPTE_432 = 12 , AOM_CICP_CP_RESERVED_13 = 13 , AOM_CICP_CP_EBU_3213 = 22 , AOM_CICP_CP_RESERVED_23 = 23
}
 List of supported color primaries. More...
 
enum  aom_transfer_characteristics {
  AOM_CICP_TC_RESERVED_0 = 0 , AOM_CICP_TC_BT_709 = 1 , AOM_CICP_TC_UNSPECIFIED = 2 , AOM_CICP_TC_RESERVED_3 = 3 ,
  AOM_CICP_TC_BT_470_M = 4 , AOM_CICP_TC_BT_470_B_G = 5 , AOM_CICP_TC_BT_601 = 6 , AOM_CICP_TC_SMPTE_240 = 7 ,
  AOM_CICP_TC_LINEAR = 8 , AOM_CICP_TC_LOG_100 = 9 , AOM_CICP_TC_LOG_100_SQRT10 , AOM_CICP_TC_IEC_61966 = 11 ,
  AOM_CICP_TC_BT_1361 = 12 , AOM_CICP_TC_SRGB = 13 , AOM_CICP_TC_BT_2020_10_BIT = 14 , AOM_CICP_TC_BT_2020_12_BIT = 15 ,
  AOM_CICP_TC_SMPTE_2084 = 16 , AOM_CICP_TC_SMPTE_428 = 17 , AOM_CICP_TC_HLG = 18 , AOM_CICP_TC_RESERVED_19 = 19
}
 List of supported transfer functions. More...
 
enum  aom_matrix_coefficients {
  AOM_CICP_MC_IDENTITY = 0 , AOM_CICP_MC_BT_709 = 1 , AOM_CICP_MC_UNSPECIFIED = 2 , AOM_CICP_MC_RESERVED_3 = 3 ,
  AOM_CICP_MC_FCC = 4 , AOM_CICP_MC_BT_470_B_G = 5 , AOM_CICP_MC_BT_601 = 6 , AOM_CICP_MC_SMPTE_240 = 7 ,
  AOM_CICP_MC_SMPTE_YCGCO = 8 , AOM_CICP_MC_BT_2020_NCL , AOM_CICP_MC_BT_2020_CL = 10 , AOM_CICP_MC_SMPTE_2085 = 11 ,
  AOM_CICP_MC_CHROMAT_NCL , AOM_CICP_MC_CHROMAT_CL = 13 , AOM_CICP_MC_ICTCP = 14 , AOM_CICP_MC_RESERVED_15 = 15
}
 List of supported matrix coefficients. More...
 
enum  aom_color_range { AOM_CR_STUDIO_RANGE = 0 , AOM_CR_FULL_RANGE = 1 }
 List of supported color range. More...
 
enum  aom_chroma_sample_position { AOM_CSP_UNKNOWN = 0 , AOM_CSP_VERTICAL = 1 , AOM_CSP_COLOCATED = 2 , AOM_CSP_RESERVED = 3 }
 List of chroma sample positions. More...
 
enum  aom_metadata_insert_flags {
  AOM_MIF_NON_KEY_FRAME = 0 , AOM_MIF_KEY_FRAME = 1 , AOM_MIF_ANY_FRAME = 2 , AOM_MIF_NON_KEY_FRAME_LAYER_SPECIFIC = 16 ,
  AOM_MIF_KEY_FRAME_LAYER_SPECIFIC = 17 , AOM_MIF_ANY_FRAME_LAYER_SPECIFIC = 18
}
 List of insert flags for Metadata. More...
 

Functions

aom_image_taom_img_alloc (aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w, unsigned int d_h, unsigned int align)
 Open a descriptor, allocating storage for the underlying image.
 
aom_image_taom_img_wrap (aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w, unsigned int d_h, unsigned int align, unsigned char *img_data)
 Open a descriptor, using existing storage for the underlying image.
 
aom_image_taom_img_alloc_with_border (aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w, unsigned int d_h, unsigned int align, unsigned int size_align, unsigned int border)
 Open a descriptor, allocating storage for the underlying image with a border.
 
int aom_img_set_rect (aom_image_t *img, unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int border)
 Set the rectangle identifying the displayed portion of the image.
 
void aom_img_flip (aom_image_t *img)
 Flip the image vertically (top for bottom)
 
void aom_img_free (aom_image_t *img)
 Close an image descriptor.
 
int aom_img_plane_width (const aom_image_t *img, int plane)
 Get the width of a plane.
 
int aom_img_plane_height (const aom_image_t *img, int plane)
 Get the height of a plane.
 
int aom_img_add_metadata (aom_image_t *img, uint32_t type, const uint8_t *data, size_t sz, aom_metadata_insert_flags_t insert_flag)
 Add metadata to image.
 
const aom_metadata_taom_img_get_metadata (const aom_image_t *img, size_t index)
 Return a metadata payload stored within the image metadata array.
 
size_t aom_img_num_metadata (const aom_image_t *img)
 Return the number of metadata blocks within the image.
 
void aom_img_remove_metadata (aom_image_t *img)
 Remove metadata from image.
 
aom_metadata_taom_img_metadata_alloc (uint32_t type, const uint8_t *data, size_t sz, aom_metadata_insert_flags_t insert_flag)
 Allocate memory for aom_metadata struct.
 
void aom_img_metadata_free (aom_metadata_t *metadata)
 Free metadata struct.
 

Detailed Description

Describes the aom image descriptor and associated operations.

Macro Definition Documentation

◆ AOM_IMG_FMT_PLANAR

#define AOM_IMG_FMT_PLANAR   0x100

Image is a planar format.

◆ AOM_IMG_FMT_UV_FLIP

#define AOM_IMG_FMT_UV_FLIP   0x200

V plane precedes U in memory.

◆ AOM_IMG_FMT_HIGHBITDEPTH

#define AOM_IMG_FMT_HIGHBITDEPTH   0x800

0x400 used to signal alpha channel, skipping for backwards compatibility. Image uses 16bit framebuffer.

◆ AOM_PLANE_PACKED

#define AOM_PLANE_PACKED   0

To be used for all packed formats

◆ AOM_PLANE_Y

◆ AOM_PLANE_U

◆ AOM_PLANE_V

#define AOM_PLANE_V   2

Typedef Documentation

◆ aom_img_fmt_t

typedef enum aom_img_fmt aom_img_fmt_t

List of supported image formats.

alias for enum aom_img_fmt

◆ aom_color_primaries_t

List of supported color primaries.

alias for enum aom_color_primaries

◆ aom_transfer_characteristics_t

List of supported transfer functions.

alias for enum aom_transfer_characteristics

◆ aom_matrix_coefficients_t

List of supported matrix coefficients.

alias for enum aom_matrix_coefficients

◆ aom_color_range_t

List of supported color range.

alias for enum aom_color_range

◆ aom_chroma_sample_position_t

List of chroma sample positions.

alias for enum aom_chroma_sample_position

◆ aom_metadata_insert_flags_t

List of insert flags for Metadata.

These flags control how the library treats metadata during encode.

While encoding, when metadata is added to an aom_image via aom_img_add_metadata(), the flag passed along with the metadata will determine where the metadata OBU will be placed in the encoded OBU stream, and whether it's layer-specific. Metadata will be emitted into the output stream within the next temporal unit if it satisfies the specified insertion flag.

If the video contains multiple spatial and/or temporal layers, a layer-specific metadata OBU only applies to the current frame's layer, as determined by the frame's temporal_id and spatial_id. Some metadata types cannot be layer-specific, as listed in Section 6.7.1 of the draft AV1 specification as of 2025-03-06.

During decoding, when the library encounters a metadata OBU, it is emitted with the next output aom_image. Its insert_flag is set to either AOM_MIF_ANY_FRAME, or AOM_MIF_ANY_FRAME_LAYER_SPECIFIC if the OBU contains an OBU header extension (i.e. the video contains multiple layers AND the metadata was added using *_LAYER_SPECIFC insert flag if using libaom).

◆ aom_image_t

typedef struct aom_image aom_image_t

Image Descriptor.

alias for struct aom_image

Enumeration Type Documentation

◆ aom_img_fmt

List of supported image formats.

Enumerator
AOM_IMG_FMT_YV12 

Image is a planar format. V plane precedes U in memory. planar YVU

AOM_IMG_FMT_I420 

Image is a planar format.

AOM_IMG_FMT_AOMYV12 

Image is a planar format. V plane precedes U in memory.

AOM_IMG_FMT_AOMI420 

< planar 4:2:0 format with aom color space Image is a planar format.

AOM_IMG_FMT_I422 

Image is a planar format.

AOM_IMG_FMT_I444 

Image is a planar format.

AOM_IMG_FMT_NV12 

Image is a planar format. 4:2:0 with U and V interleaved

AOM_IMG_FMT_I42016 

Image uses 16bit framebuffer.

AOM_IMG_FMT_YV1216 

Image uses 16bit framebuffer.

AOM_IMG_FMT_I42216 

Image uses 16bit framebuffer.

AOM_IMG_FMT_I44416 

Image uses 16bit framebuffer.

◆ aom_color_primaries

List of supported color primaries.

Enumerator
AOM_CICP_CP_RESERVED_0 

For future use

AOM_CICP_CP_BT_709 

BT.709

AOM_CICP_CP_UNSPECIFIED 

Unspecified

AOM_CICP_CP_RESERVED_3 

For future use

AOM_CICP_CP_BT_470_M 

BT.470 System M (historical)

AOM_CICP_CP_BT_470_B_G 

BT.470 System B, G (historical)

AOM_CICP_CP_BT_601 

BT.601

AOM_CICP_CP_SMPTE_240 

SMPTE 240

AOM_CICP_CP_GENERIC_FILM 

Generic film (color filters using illuminant C)

AOM_CICP_CP_BT_2020 

BT.2020, BT.2100

AOM_CICP_CP_XYZ 

SMPTE 428 (CIE 1921 XYZ)

AOM_CICP_CP_SMPTE_431 

SMPTE RP 431-2

AOM_CICP_CP_SMPTE_432 

SMPTE EG 432-1

AOM_CICP_CP_RESERVED_13 

For future use (values 13 - 21)

AOM_CICP_CP_EBU_3213 

EBU Tech. 3213-E

AOM_CICP_CP_RESERVED_23 

For future use (values 23 - 255)

◆ aom_transfer_characteristics

List of supported transfer functions.

Enumerator
AOM_CICP_TC_RESERVED_0 

For future use

AOM_CICP_TC_BT_709 

BT.709

AOM_CICP_TC_UNSPECIFIED 

Unspecified

AOM_CICP_TC_RESERVED_3 

For future use

AOM_CICP_TC_BT_470_M 

BT.470 System M (historical)

AOM_CICP_TC_BT_470_B_G 

BT.470 System B, G (historical)

AOM_CICP_TC_BT_601 

BT.601

AOM_CICP_TC_SMPTE_240 

SMPTE 240 M

AOM_CICP_TC_LINEAR 

Linear

AOM_CICP_TC_LOG_100 

Logarithmic (100 : 1 range)

AOM_CICP_TC_LOG_100_SQRT10 

Logarithmic (100 * Sqrt(10) : 1 range)

AOM_CICP_TC_IEC_61966 

IEC 61966-2-4

AOM_CICP_TC_BT_1361 

BT.1361

AOM_CICP_TC_SRGB 

sRGB or sYCC

AOM_CICP_TC_BT_2020_10_BIT 

BT.2020 10-bit systems

AOM_CICP_TC_BT_2020_12_BIT 

BT.2020 12-bit systems

AOM_CICP_TC_SMPTE_2084 

SMPTE ST 2084, ITU BT.2100 PQ

AOM_CICP_TC_SMPTE_428 

SMPTE ST 428

AOM_CICP_TC_HLG 

BT.2100 HLG, ARIB STD-B67

AOM_CICP_TC_RESERVED_19 

For future use (values 19-255)

◆ aom_matrix_coefficients

List of supported matrix coefficients.

Enumerator
AOM_CICP_MC_IDENTITY 

Identity matrix

AOM_CICP_MC_BT_709 

BT.709

AOM_CICP_MC_UNSPECIFIED 

Unspecified

AOM_CICP_MC_RESERVED_3 

For future use

AOM_CICP_MC_FCC 

US FCC 73.628

AOM_CICP_MC_BT_470_B_G 

BT.470 System B, G (historical)

AOM_CICP_MC_BT_601 

BT.601

AOM_CICP_MC_SMPTE_240 

SMPTE 240 M

AOM_CICP_MC_SMPTE_YCGCO 

YCgCo

AOM_CICP_MC_BT_2020_NCL 

BT.2020 non-constant luminance, BT.2100 YCbCr

AOM_CICP_MC_BT_2020_CL 

BT.2020 constant luminance

AOM_CICP_MC_SMPTE_2085 

SMPTE ST 2085 YDzDx

AOM_CICP_MC_CHROMAT_NCL 

Chromaticity-derived non-constant luminance

AOM_CICP_MC_CHROMAT_CL 

Chromaticity-derived constant luminance

AOM_CICP_MC_ICTCP 

BT.2100 ICtCp

AOM_CICP_MC_RESERVED_15 

For future use (values 15-255)

◆ aom_color_range

List of supported color range.

Enumerator
AOM_CR_STUDIO_RANGE 
  • Y [16..235], UV [16..240] (bit depth 8)
  • Y [64..940], UV [64..960] (bit depth 10)
  • Y [256..3760], UV [256..3840] (bit depth 12)
AOM_CR_FULL_RANGE 
  • YUV/RGB [0..255] (bit depth 8)
  • YUV/RGB [0..1023] (bit depth 10)
  • YUV/RGB [0..4095] (bit depth 12)

◆ aom_chroma_sample_position

List of chroma sample positions.

Enumerator
AOM_CSP_UNKNOWN 

Unknown

AOM_CSP_VERTICAL 

Horizontally co-located with luma(0, 0) sample, between two vertical samples

AOM_CSP_COLOCATED 

Co-located with luma(0, 0) sample

AOM_CSP_RESERVED 

Reserved value

◆ aom_metadata_insert_flags

List of insert flags for Metadata.

These flags control how the library treats metadata during encode.

While encoding, when metadata is added to an aom_image via aom_img_add_metadata(), the flag passed along with the metadata will determine where the metadata OBU will be placed in the encoded OBU stream, and whether it's layer-specific. Metadata will be emitted into the output stream within the next temporal unit if it satisfies the specified insertion flag.

If the video contains multiple spatial and/or temporal layers, a layer-specific metadata OBU only applies to the current frame's layer, as determined by the frame's temporal_id and spatial_id. Some metadata types cannot be layer-specific, as listed in Section 6.7.1 of the draft AV1 specification as of 2025-03-06.

During decoding, when the library encounters a metadata OBU, it is emitted with the next output aom_image. Its insert_flag is set to either AOM_MIF_ANY_FRAME, or AOM_MIF_ANY_FRAME_LAYER_SPECIFIC if the OBU contains an OBU header extension (i.e. the video contains multiple layers AND the metadata was added using *_LAYER_SPECIFC insert flag if using libaom).

Enumerator
AOM_MIF_NON_KEY_FRAME 

Adds metadata if it's not a keyframe

AOM_MIF_KEY_FRAME 

Adds metadata only if it's a keyframe

AOM_MIF_ANY_FRAME 

Adds metadata to any type of frame

AOM_MIF_NON_KEY_FRAME_LAYER_SPECIFIC 

Adds layer-specific metadata if it's not a keyframe

AOM_MIF_KEY_FRAME_LAYER_SPECIFIC 

Adds layer-specific metadata only if it's a keyframe

AOM_MIF_ANY_FRAME_LAYER_SPECIFIC 

Adds layer-specific metadata to any type of frame

Function Documentation

◆ aom_img_alloc()

aom_image_t * aom_img_alloc ( aom_image_t * img,
aom_img_fmt_t fmt,
unsigned int d_w,
unsigned int d_h,
unsigned int align )

Open a descriptor, allocating storage for the underlying image.

Returns a descriptor for storing an image of the given format. The storage for the image is allocated on the heap.

Parameters
[in]imgPointer to storage for descriptor. If this parameter is NULL, the storage for the descriptor will be allocated on the heap.
[in]fmtFormat for the image
[in]d_wWidth of the image. Must not exceed 0x08000000 (2^27).
[in]d_hHeight of the image. Must not exceed 0x08000000 (2^27).
[in]alignAlignment, in bytes, of the image buffer and each row in the image (stride). Must not exceed 65536.
Returns
Returns a pointer to the initialized image descriptor. If the img parameter is non-null, the value of the img parameter will be returned.

◆ aom_img_wrap()

aom_image_t * aom_img_wrap ( aom_image_t * img,
aom_img_fmt_t fmt,
unsigned int d_w,
unsigned int d_h,
unsigned int align,
unsigned char * img_data )

Open a descriptor, using existing storage for the underlying image.

Returns a descriptor for storing an image of the given format. The storage for the image has been allocated elsewhere, and a descriptor is desired to "wrap" that storage.

Parameters
[in]imgPointer to storage for descriptor. If this parameter is NULL, the storage for the descriptor will be allocated on the heap.
[in]fmtFormat for the image
[in]d_wWidth of the image. Must not exceed 0x08000000 (2^27).
[in]d_hHeight of the image. Must not exceed 0x08000000 (2^27).
[in]alignAlignment, in bytes, of each row in the image (stride). Must not exceed 65536.
[in]img_dataStorage to use for the image. The storage must outlive the returned image descriptor; it can be disposed of after calling aom_img_free().
Returns
Returns a pointer to the initialized image descriptor. If the img parameter is non-null, the value of the img parameter will be returned.

◆ aom_img_alloc_with_border()

aom_image_t * aom_img_alloc_with_border ( aom_image_t * img,
aom_img_fmt_t fmt,
unsigned int d_w,
unsigned int d_h,
unsigned int align,
unsigned int size_align,
unsigned int border )

Open a descriptor, allocating storage for the underlying image with a border.

Returns a descriptor for storing an image of the given format and its borders. The storage for the image is allocated on the heap.

Parameters
[in]imgPointer to storage for descriptor. If this parameter is NULL, the storage for the descriptor will be allocated on the heap.
[in]fmtFormat for the image
[in]d_wWidth of the image. Must not exceed 0x08000000 (2^27).
[in]d_hHeight of the image. Must not exceed 0x08000000 (2^27).
[in]alignAlignment, in bytes, of the image buffer and each row in the image (stride). Must not exceed 65536.
[in]size_alignAlignment, in pixels, of the image width and height. Must not exceed 65536.
[in]borderA border that is padded on four sides of the image. Must not exceed 65536.
Returns
Returns a pointer to the initialized image descriptor. If the img parameter is non-null, the value of the img parameter will be returned.

◆ aom_img_set_rect()

int aom_img_set_rect ( aom_image_t * img,
unsigned int x,
unsigned int y,
unsigned int w,
unsigned int h,
unsigned int border )

Set the rectangle identifying the displayed portion of the image.

Updates the displayed rectangle (aka viewport) on the image surface to match the specified coordinates and size. Specifically, sets img->d_w, img->d_h, and elements of the img->planes[] array.

Parameters
[in]imgImage descriptor
[in]xleftmost column
[in]ytopmost row
[in]wwidth
[in]hheight
[in]borderA border that is padded on four sides of the image.
Returns
0 if the requested rectangle is valid, nonzero (-1) otherwise.

◆ aom_img_flip()

void aom_img_flip ( aom_image_t * img)

Flip the image vertically (top for bottom)

Adjusts the image descriptor's pointers and strides to make the image be referenced upside-down.

Parameters
[in]imgImage descriptor

◆ aom_img_free()

void aom_img_free ( aom_image_t * img)

Close an image descriptor.

Frees all allocated storage associated with an image descriptor.

Parameters
[in]imgImage descriptor

◆ aom_img_plane_width()

int aom_img_plane_width ( const aom_image_t * img,
int plane )

Get the width of a plane.

Get the width of a plane of an image

Parameters
[in]imgImage descriptor
[in]planePlane index

◆ aom_img_plane_height()

int aom_img_plane_height ( const aom_image_t * img,
int plane )

Get the height of a plane.

Get the height of a plane of an image

Parameters
[in]imgImage descriptor
[in]planePlane index

◆ aom_img_add_metadata()

int aom_img_add_metadata ( aom_image_t * img,
uint32_t type,
const uint8_t * data,
size_t sz,
aom_metadata_insert_flags_t insert_flag )

Add metadata to image.

Adds metadata to aom_image_t. Function makes a copy of the provided data parameter. Metadata insertion point is controlled by insert_flag.

Parameters
[in]imgImage descriptor
[in]typeMetadata type
[in]dataMetadata contents
[in]szMetadata contents size
[in]insert_flagMetadata insert flag
Returns
Returns 0 on success. If img or data is NULL, sz is 0, or memory allocation fails, it returns -1.

◆ aom_img_get_metadata()

const aom_metadata_t * aom_img_get_metadata ( const aom_image_t * img,
size_t index )

Return a metadata payload stored within the image metadata array.

Gets the metadata (aom_metadata_t) at the indicated index in the image metadata array.

Parameters
[in]imgPointer to image descriptor to get metadata from
[in]indexMetadata index to get from metadata array
Returns
Returns a const pointer to the selected metadata, if img and/or index is invalid, it returns NULL.

◆ aom_img_num_metadata()

size_t aom_img_num_metadata ( const aom_image_t * img)

Return the number of metadata blocks within the image.

Gets the number of metadata blocks contained within the provided image metadata array.

Parameters
[in]imgPointer to image descriptor to get metadata number from.
Returns
Returns the size of the metadata array. If img or metadata is NULL, it returns 0.

◆ aom_img_remove_metadata()

void aom_img_remove_metadata ( aom_image_t * img)

Remove metadata from image.

Removes all metadata in image metadata list and sets metadata list pointer to NULL.

Parameters
[in]imgImage descriptor

◆ aom_img_metadata_alloc()

aom_metadata_t * aom_img_metadata_alloc ( uint32_t type,
const uint8_t * data,
size_t sz,
aom_metadata_insert_flags_t insert_flag )

Allocate memory for aom_metadata struct.

Allocates storage for the metadata payload, sets its type and copies the payload data into the aom_metadata struct. A metadata payload buffer of size sz is allocated and sz bytes are copied from data into the payload buffer.

Parameters
[in]typeMetadata type
[in]dataMetadata data pointer
[in]szMetadata size
[in]insert_flagMetadata insert flag
Returns
Returns the newly allocated aom_metadata struct. If data is NULL, sz is 0, or memory allocation fails, it returns NULL.

◆ aom_img_metadata_free()

void aom_img_metadata_free ( aom_metadata_t * metadata)

Free metadata struct.

Free metadata struct and its buffer.

Parameters
[in]metadataMetadata struct pointer